﻿/**
 * 
 * Copyright 2009, 2010 Mike Jamer [email: mikejamer@gmail.com ]
 * 
 * This File is part of Moose IRC
 * 
 * MooseIRC is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * MooseIRC is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with MooseIRC.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */

using System;
using System.Runtime.Serialization;

namespace moose.irc {
    /// <summary>
    /// Enumerates Possible IRC Event Types 
    /// </summary>
    [CLSCompliant(true)]
    [Serializable()]
    public enum IrcEventTypes : byte {

        /// <summary>
        /// Default Event Type, should just be echoed as a status message 
        /// </summary>
        MessageStatus = 0x0,

        /// <summary>
        /// Private Message, sent as a query directly from a user, or from a channel 
        /// </summary>
        PrivateMessage = 0x1,

        /// <summary>
        /// Notice 
        /// </summary>
        NoticeMessage = 0x2,

        /// <summary>
        /// Connected to the server 
        /// </summary>
        ServerConnected = 0x3,

        /// <summary>
        /// Disconnected from the server 
        /// </summary>
        ServerDisconnected = 0x4,

        /// <summary>
        /// Registered to server 
        /// </summary>
        ServerRegistered = 0x5,

        /// <summary>
        /// A user joined a channel you're a member of 
        /// </summary>
        ChannelJoined = 0x6,

        /// <summary>
        /// You joined a brand new channel 
        /// </summary>
        ChannelJoinedSelf = 0x7,

        /// <summary>
        /// A yser parted a channel you're a member of 
        /// </summary>
        ChannelParted = 0x8,

        /// <summary>
        /// You parted a channel 
        /// </summary>
        ChannelPartedSelf = 0x9,

        /// <summary>
        /// Channel Mode Changed 
        /// </summary>
        ChannelModeChange = 0xA,

        /// <summary>
        /// Channel Topic Changed 
        /// </summary>
        ChannelTopicChange = 0xB,

        /// <summary>
        /// User Kicked from channel 
        /// </summary>
        ChannelKicked = 0xC,

        /// <summary>
        /// You were kicked from a channel 
        /// </summary>
        ChannelKickedSelf = 0xD,

        /// <summary>
        /// User Quit Network, or was disconnected or whatever 
        /// </summary>
        UserQuit = 0xE,

        /// <summary>
        /// You Quit the network, or have been disconnected
        /// </summary>
        UserQuitSelf = 0x10,

        /// <summary>
        /// A User changed their nickname
        /// </summary>
        UserNickChange = 0x11,

        /// <summary>
        /// You changed your own nickname
        /// </summary>
        UserNickChangeSelf = 0x12,

        /// <summary>
        /// Update channel Users list
        /// </summary>
        ChannelUpdateUsers = 0x13

    }
}
